/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.sigu.modelo.daoImpl;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import pe.edu.upc.sigu.entities.Carreras;
import pe.edu.upc.sigu.entities.Cursos;
import pe.edu.upc.sigu.entities.CursosSeccionesDocentes;
import pe.edu.upc.sigu.entities.Periodos;
import pe.edu.upc.sigu.entities.Personal;
import pe.edu.upc.sigu.entities.Seccion;
import pe.edu.upc.sigu.negocio.service.CursosSeccionesDocentesDao;

/**
 *
 * @author Usuario2
 */
@Repository(value ="cursosSeccionesDocentesDao")
public class CursosSeccionesDocentesDaoImpl implements CursosSeccionesDocentesDao {


    private EntityManager entityManager = null;

    @PersistenceContext
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    @Override
    public List<Carreras> getCarreras(Periodos periodo, Personal personal) {
        String sql = "SELECT  DISTINCT(a.carreras) FROM CursosSeccionesDocentes a JOIN a.docentesPeriodos c "
                + "WHERE c.periodos=:periodo AND c.personal1 = :personal";
        Query query = getEntityManager().createQuery(sql);
        query.setParameter("periodo", periodo);
        query.setParameter("personal",personal);
        return query.getResultList();
    }

        @Override
    public List<Seccion> getSecciones(Periodos periodos, Personal personal, Carreras carrera) {
                String sql = "SELECT  DISTINCT(a.seccion) FROM CursosSeccionesDocentes a JOIN a.docentesPeriodos c "
                + "WHERE c.periodos=:periodo "
                        + " AND c.personal1 = :personal"
                        + " AND a.carreras =:carrera";
        Query query = getEntityManager().createQuery(sql);
        query.setParameter("periodo", periodos);
        query.setParameter("personal",personal);
        query.setParameter("carrera",carrera);
        return query.getResultList();
    }

    @Override
    public List<Cursos> getCursos(Periodos periodo, Personal personal, Carreras carrera, Seccion seccion) {
                       String sql = "SELECT  DISTINCT(a.cursos) FROM CursosSeccionesDocentes a JOIN a.docentesPeriodos c "
                + "WHERE c.periodos=:periodo "
                        + " AND c.personal1 = :personal"
                        + " AND a.carreras =:carrera "
                        + " AND a.seccion =:seccion";
        Query query = getEntityManager().createQuery(sql);
        query.setParameter("periodo", periodo);
        query.setParameter("personal",personal);
        query.setParameter("carrera",carrera);
        query.setParameter("seccion",seccion);

        return query.getResultList();
    }

    /**
     * @return the entityManager
     */
    public EntityManager getEntityManager() {
        return entityManager;
    }





}
